package com.flyco.modules.returns.entity;

import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.flyco.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import com.flyco.poi.excel.annotation.Excel;

/**
 * @Description: 申请退换货
 * @Author: flyco
 * @Date:   2023-08-01
 * @Version: V1.0
 */
@Data
@TableName("oms_order_return_apply")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="oms_order_return_apply对象", description="申请退换货")
public class OmsOrderReturnApply {

	/**id*/
	@TableId(type = IdType.INPUT)
    @ApiModelProperty(value = "id")
	private Long id;

    @ApiModelProperty(value = "订单id")
	private String orderId;

    @ApiModelProperty(value = "商家id")
	private Long partnerId;
	/**经销商编码*/
	@Excel(name = "经销商Id", width = 15)
    @ApiModelProperty(value = "经销商编码")
	private String storeId;

	@Excel(name = "经销商", width = 15)
	private String storeName;

	/**会员ID*/
	@Excel(name = "会员ID", width = 15)
    @ApiModelProperty(value = "会员ID")
	private Long memberId;
	/**预计退款金额*/
	@Excel(name = "预计退款金额", width = 15)
    @ApiModelProperty(value = "预计退款金额")
	private java.math.BigDecimal returnAmount;
	/**实际退款金额*/
	@Excel(name = "实际退款金额", width = 15)
    @ApiModelProperty(value = "实际退款金额")
	private java.math.BigDecimal realReturnAmount;
	/**扣除费用*/
	@Excel(name = "扣除费用", width = 15)
    @ApiModelProperty(value = "扣除费用")
	private java.math.BigDecimal deductAmount;
	/**扣除原因*/
	@Excel(name = "扣除原因", width = 15)
    @ApiModelProperty(value = "扣除原因")
	private String deductReason;
	/**退货类型(0为退换货(默认),1为退货,2为换货,3为补发商品，4为仅退款)*/
	@Excel(name = "退货类型(0为退换货(默认),1为退货,2为换货,3为补发商品，4为仅退款)", width = 15)
    @ApiModelProperty(value = "退货类型(0为退换货(默认),1为退货,2为换货,3为补发商品，4为仅退款)")
	@Dict(dicCode ="returnType")
	private Integer returnType;
	/**退款方式(CashRefund现金退，SameWayRefund原路退)*/
	@Excel(name = "退款方式(CashRefund现金退，SameWayRefund原路退)", width = 15)
    @ApiModelProperty(value = "退款方式(CashRefund现金退，SameWayRefund原路退)")
	private String refundType;
	/**申请状态：1->待客户确认；2->待销售审批；3->待后台审批；5已审批，4->已拒绝;  0->已取消*/
	@Excel(name = "申请状态：1->待客户确认；2->待销售审批；3->待后台审批；5已审批，4->已拒绝;  0->已取消", width = 15)
    @ApiModelProperty(value = "申请状态：1->待客户确认；2->待销售审批；3->待后台审批；5已审批，4->已拒绝;  0->已取消")
	@Dict(dicCode = "returnApplyStatus")
	private Integer status;
	/**货品状态：0->无处理；1->状态等待；2->等待用户发货；3->用户已发货；4->已收货；5->货品异常*/
	@Excel(name = "货品状态：0->无处理；1->状态等待；2->等待用户发货；3->用户已发货；4->已收货；5->货品异常", width = 15)
    @ApiModelProperty(value = "货品状态：0->无处理；1->状态等待；2->等待用户发货；3->用户已发货；4->已收货；5->货品异常")
	private Integer productStatus;
	/**钱款状态：0->无处理；1->状态等待；2->退款申请中；3->退款前审；4->退款成功；5->退款失败*/
	@Excel(name = "钱款状态：0->无处理；1->状态等待；2->退款申请中；3->退款前审；4->退款成功；5->退款失败", width = 15)
    @ApiModelProperty(value = "钱款状态：0->无处理；1->状态等待；2->退款申请中；3->退款前审；4->退款成功；5->退款失败")
	private Integer moneyStatus;
	/**退货人姓名*/
	@Excel(name = "退货人姓名", width = 15)
    @ApiModelProperty(value = "退货人姓名")
	private String returnName;
	/**退货人电话*/
	@Excel(name = "退货人电话", width = 15)
    @ApiModelProperty(value = "退货人电话")
	private String returnPhone;
	/**退货原因*/
	@Excel(name = "退货原因", width = 15)
    @ApiModelProperty(value = "退货原因")
	private String reason;
	/**收货人*/
	@Excel(name = "收货人", width = 15)
    @ApiModelProperty(value = "收货人")
	private String receiveMan;
	/**收货人电话*/
	@Excel(name = "收货人电话", width = 15)
    @ApiModelProperty(value = "收货人电话")
	private String receivePhone;
	/**省份/直辖市*/
	@Excel(name = "省份/直辖市", width = 15)
    @ApiModelProperty(value = "省份/直辖市")
	private String receiveProvince;
	/**省份编号*/
	@Excel(name = "省份编号", width = 15)
    @ApiModelProperty(value = "省份编号")
	private String receiveProvinceCode;
	/**城市*/
	@Excel(name = "城市", width = 15)
    @ApiModelProperty(value = "城市")
	private String receiveCity;
	/**城市编号*/
	@Excel(name = "城市编号", width = 15)
    @ApiModelProperty(value = "城市编号")
	private String receiveCityCode;
	/**区*/
	@Excel(name = "区", width = 15)
    @ApiModelProperty(value = "区")
	private String receiveRegion;
	/**区编号*/
	@Excel(name = "区编号", width = 15)
    @ApiModelProperty(value = "区编号")
	private String receiveRegionCode;
	/**镇或街道编号*/
	@Excel(name = "镇或街道编号", width = 15)
    @ApiModelProperty(value = "镇或街道编号")
	private String receiveTown;
	/**镇或街道*/
	@Excel(name = "镇或街道", width = 15)
    @ApiModelProperty(value = "镇或街道")
	private String receiveTownCode;
	/**详细地址*/
	@Excel(name = "详细地址", width = 15)
    @ApiModelProperty(value = "详细地址")
	private String receiveDetailAddress;
	/**物流单号*/
	@Excel(name = "物流单号", width = 15)
    @ApiModelProperty(value = "物流单号")
	private String deliverySn;
	/**物流公司*/
	@Excel(name = "物流公司", width = 15)
    @ApiModelProperty(value = "物流公司")
	private String deliveryCompany;
	/**销售人员id*/
	@Excel(name = "销售人员id", width = 15)
    @ApiModelProperty(value = "销售人员id")
	private Long saleUserId;
	/**销售人员名称*/
	@Excel(name = "销售人员名称", width = 15)
    @ApiModelProperty(value = "销售人员名称")
	private String saleUserName;
	/**申请时间*/
	@Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "申请时间")
	private Date createTime;
	/**更新时间*/
	@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
	private Date updateTime;
	/**删除状态：0->未删除；1->已删除*/
	@Excel(name = "删除状态：0->未删除；1->已删除", width = 15)
    @ApiModelProperty(value = "删除状态：0->未删除；1->已删除")
	private Integer cancelFlag;

	@ApiModelProperty(value = "审核意见")
	private String approveComments;

	@ApiModelProperty(value = "发货单Id")
	private String sendOrderId;

	@ApiModelProperty(value = "退换货凭证")
	private String returnCertificate;

	@ApiModelProperty(value = "渠道Id")
	private String channelId;

	@ApiModelProperty(value = "渠道名称")
	private String channelName;

	@ApiModelProperty(value = "品鉴报告")
	private String inspectionReport;

	@ApiModelProperty(value = "销售在金蝶的编码")
	private String saleJdCode;
}
